-- Autor: Ariel Pacay
-- Legajo N° 121237-0
-- Curso K2081
-- Docente a cargo: Valeria Pennella
-- Campus - Noche
-- TP1 Deportes Extremos

type Nombre = String
type Ruedas = Integer
type Deporte = String
type Equipamiento = (Deporte, Ruedas)
type Puntaje = Integer
type Edad = Integer
type Deportista = (Nombre, Edad, Equipamiento, Puntaje)



judith = ("judith", 20, ("rollers", 8),7)
emilio = ("emilio", 21, ("bicicleta", 2), 8)
sara = ("sara", 18, ("parkour", 0), 8)
pedro = ("pedro",22, ("escalada", 0), 6)
maxi = ("maxi", 25, ("skate", 4), 9)

--Funciones Auxiliares
elEquipamientoDe::Deportista -> Equipamiento
elEquipamientoDe (_, _, unEquipamiento, _) = unEquipamiento
dameNombre::Deportista->Nombre
dameNombre (unNombre,_,_,_) = unNombre
laAlturaDe::Obstaculo->Altura
laAlturaDe (_,unaAltura) = unaAltura
damePuntajeDe::Deportista->Puntaje
damePuntajeDe (_,_,_,unPuntaje) = unPuntaje
--Fin de Funciones Auxiliares

--Ejercicio 6 (Prototipos)
--Prototipos de Ej 1:
type Costo = Integer
costoDeInscripcion::Deportista -> Costo
precioPor::Equipamiento -> Costo
--Prototipos de Ej 2:
type Nivel = Integer
nivelCoraje::Deportista->Nivel
--Prototipos de Ej 3:
masCorajudo::Deportista->Deportista->Deportista->Nombre
--Prototipos de Ej 4:
type LasTiene = Bool
tieneChances::Deportista->LasTiene
--Prototipos de Ej 5:
puedeSuperar::Deportista->Obstaculo->Bool
--Fin De Ejercicio 6

-- Ejercicio 1
costoDeInscripcion esteDeportista = precioPor (elEquipamientoDe esteDeportista)
precioPor ( _ , ruedas) | ruedas == 0 = 1000
                        | ruedas <= 4 = 500 * ruedas
                        | otherwise = 750 * ruedas
--Fin de Ejercicio 1

--Ejercicio 2

nivelCoraje unDeportista =  100 -(restaCobardiaEnBaseA (elEquipamientoDe unDeportista))
restaCobardiaEnBaseA ("bicicleta", _) = 20
restaCobardiaEnBaseA ("rollers", _) = 15
restaCobardiaEnBaseA ("skate", _) = 10
restaCobardiaEnBaseA (unDeporte, _ ) = 5
--Fin de Ejercicio 2

--Ejercicio 3
masCorajudo pri seg ter | nivelCoraje pri >= nivelCoraje seg && nivelCoraje pri >= nivelCoraje ter = dameNombre pri
                        | nivelCoraje seg > nivelCoraje pri && nivelCoraje seg >= nivelCoraje ter = dameNombre seg
						| otherwise = dameNombre ter
--Fin de Ejercicio 3

--Ejercicio 4
tieneChances unDeportista = damePuntajeDe unDeportista > 7 || nivelCoraje unDeportista > 90 
						  
--Fin de Ejercicio 4

--Ejercicio 5
type Obstaculo = (Nombre, Altura)
type Altura = Integer
monticuloTierra = ("monticulo de tierra", 50)
piedra = ("piedra", 3)
puedeSuperar unDeportista unObstaculo = laAlturaDe unObstaculo < 18 || tieneChances unDeportista
--Fin De Ejercicio 5